In general, a computer application allows a user to employ the capabilities of a computer to perform a task. Common computer applications include those used for, for example, word processing, e-mail, and browsing the Internet. Developers of such computer applications typically aim to deliver optimized applications with a robust set of features or a set of features tailored to a particular user base.
Computer applications can be delivered to a user in a variety of ways. For example, a computer application may be offered as part of “off-the-shelf” packaged software, where the application executes entirely on a user's computer; in some cases, the application communicates with remotely located data sources or applications. Alternatively, an application can execute on a remote host computer, and provide results to a user's computer. In this client-server model, the host typically maintains a distinct “session” for each client, and uses at least some data that is likewise specific to the client. Moreover, a computer application may be downloaded from the Internet. Also, various Internet entities provide applications that users can use. Web sites are known to offer, for example, mapping, restaurant review, Internet searching, photo sharing, news, stock market, weather, and social networking services. Such web applications provide a fixed set of features to users, who can use them to store and share data. Thus, many social networking sites allow users to store data, such as photographs, music, and files, and have others access that data. What cannot be done, however, is that the users can themselves modify the underlying applications that manage the data. Instead, these applications are designed with specific functionality (e.g., responding to database requests) and cannot be modified, except perhaps by system or web site administrators.
Creating a computer application, such as any of the ones described above, typically requires writing potentially hundreds to millions of lines of code. Such “programming” requires a certain level of proficiency and expertise with the programming language(s) used to code. Moreover, the developer generally has to have a good understanding of how computer systems work and code structure in order to ensure that their applications can run on particular platforms and at desired performance levels. At best, a typical user is able to enable or disable various predefined functions of an application. Further, most applications are provided to users in object code form, and thus cannot be easily modified at the programming code level to further extend their functionality. Even for applications that are provided in source code form, the user must have sophisticated computer programming skills in order to modify the application functionality. Accordingly, it would be beneficial to provide a user wishing to create his/her own application with the ability to do so without requiring the user to code the entirety of the application and/or to have a strong understanding of the code needed for executing the application.